Skip to main content
Updates a single product within a composed menu. Use this endpoint when your POS or RMS pushes item-level changes — pricing, availability, or bundled items — without replacing the entire menu payload. The request body uses the same menu product shape as products in Upsert menus. Send only the fields you want to change; omitted fields keep their current values.
Requires an access token with the menus:write scope. See Token to obtain a token.

Path parameters

Query parameters

Omitting a scope parameter does not mean “all”: it resolves to __ANY__ and only matches menus synced with __ANY__ for that dimension. If menus were synced per fulfillment or channel (for example TAKEAWAY and DINE_IN), send one update per scope; when no menu exists for the requested scope the response is 404. Each composed menu is keyed by fulfillment_id + store_id + channel_id + brand_id + menu.id; see Menu sync.

Request body

Same shape as a product in the products array on Upsert menus. The product id is set in the path parameter — omit it from the request body. Every field is optional on update, including the fields inside pricing and availability. Omitted fields keep their current values and no defaults are applied:
  • pricing and availability merge field by field. { "pricing": { "price": 2.49 } } changes only the price; modifiers, modifier_group_ids, and quantity limits stay as they are.
  • Arrays (bundled_items, labels, pricing.modifiers, …) are replaced as a whole when sent.
  • To clear out_of_stock_until when switching back to AVAILABLE, send "out_of_stock_until": null.
Each product in the request body:Each availability object:Each bundled_items entry:
Example product
Product pricing in the request body:Each object in modifiers configures one modifier group referenced in modifier_group_ids. It accepts the same pricing fields as the parent product, plus modifier-specific fields:
Example modifiers entry

Response

Returns the updated product in data — the same shape as a product in List menus, including id, name, pricing, availability, bundled_items, and metadata.

Error responses